跳到主要内容

React Native 第一印象

· 阅读需 6 分钟
Random Image
图片与正文无关

最近在看 React Native,目的当然是能学到会用来做东西的程度,不过第一步还是想对其有个尽量准确而且深入的第一印象。以下是通过几天的了解之后的一些感受,有可能有不对的地方,请大牛批评指正。

RN 是跨平台原生应用解决方案之一

如果从跨平台移动 APP 的制作技术来说,从最开始的纯 Webapp,到后面的 Hybrid APP,再到 React Native,React Native 给人一种十分先进的感觉,但同时也要知道的是,这种跨平台应用的技术很早就有了,而且是有很多种。范围缩小到移动 APP 这个领域,在 React Native 出现前后也出现了很多同类技术,比如 Weex, Native Script 等。我们在选择 RN 作为自己的主要学习方向时需要了解各个解决方案的区别和各自特点。

RN 的快与慢

React Native 是用 Javascript 等类前端技术在写真正的原生应用,以前我以为是类似那种只有导航才是原生的那种技术,其实所有的组件渲染出来最终都是原生,从这一点上比之前的 Hybrid APP 要高明很多,体验也要好很多。

但是有时又会有体验不好的情况,因为 React Native 在 Javascript 和原生之间是采用定期同步的方式,而且是用 JSON 的格式,所以如果设计不合理,界面上一次需要有太多的组件变化需要同步的时候,就容易卡顿。另一方面,原生的体验不卡顿时,有可能内部在进行异步请求,实际表现出的效果就是卡顿和不灵敏。这种不好的体验,有的需要在产品设计的时候就进行规避,有的可以从技术上进行优化。

Learn once, write anywhere

这是 RN 的设计思想,并不是一开始以为的 Write once, run anywhere。当然后者也有,Native Script 就是后者的思路。RN 的优点在于对于要求不那么高的地方,写一次到处运行也是可以的,但是想进一步适配设备时,还可以分开进行定制。

React Native 的开发模式

一开始以为 React Native 只能使用贯穿整个项目的方式开发,后来发现其很灵活,除了整个应用都用 RN 开发之外,还可以用下面的方式进行。

  1. 原生里面嵌入 RN

  2. RN 里面嵌入原生

  3. 全部使用原生组件,RN 来调度

3 和 2 不一样,不一样的地方在于多和少的理解,3 是极端的思路,为了获得最好的体验,大部分的组件都是用原生封装的,只是交给 RN 来布局和调度。而 2 只是少量嵌入,比如嵌入一个 webview,或者嵌入一个原生的地图或支付等。

关于开发环境

首先要学会标准的开发环境,以及各个环境下的打包方法,真机调试方法,但是各个公司也都给出了一些其他的开发流程,有时甚至是更好的选择,比如我现在觉得 Expo 提供的开发工具和开发流程应该是最好的,因为其可以不依赖对 Xcode 和 Android Studio 的安装即可快速体验,而我最开始看时的感觉就是想写个 Hello World 竟然这么麻烦,Expo 很好的解决了这个问题。

当然还有很多新的开发工具和调试工具出现,都可以进行尝试。有时候先找到这个领域里的最佳工具和最佳实践,会在学习新知识的时候事半功倍。

关于文档

目前基本上已经不像刚开始的时候那么缺了,去 Github 上一搜一大把,虽然有一些写的比较早了,但是也可以看一看,最主要的还是先把官方文档看懂。

我学习 RN 的项目目标

先以学习为目的,不想实现复杂的业务逻辑,想弄一个简单的项目,能体验 RN 的各个方面,比如调试,测试,Mock 等等方面,这一关过了之后,试着做一个实际的 RN 项目。